﻿using AviationSimulator.DataItems.Mode.Receive;
using AviationSimulator.DataItems.Mode.Send;
using AviationSimulator.Managers;

namespace AviationSimulator.Factories
{
    public static class ManagerFactory
    {
        private static ParametersManager _parametersManager;
        private static ReceiveMode _receiveMode;
        private static ImportMode _importMode;
        private static ManualMode _manualMode;
        private static MathFunctionMode _mathFunctionMode;
        private static PackageManager _packageManager;
        private static NetworkManager _networkManager;
        private static FileManager _fileManager;

        public static ParametersManager ParametersManager
        {
            get { return _parametersManager ?? (_parametersManager = new ParametersManager()); }
        }

        public static ReceiveMode ReceiveMode
        {
            get { return _receiveMode ?? (_receiveMode = new ReceiveMode()); }
        }

        public static ImportMode ImportMode
        {
            get { return _importMode ?? (_importMode = new ImportMode()); }
        }

        public static ManualMode ManualMode
        {
            get { return _manualMode ?? (_manualMode = new ManualMode()); }
        }

        public static MathFunctionMode MathFunctionMode
        {
            get { return _mathFunctionMode ?? (_mathFunctionMode = new MathFunctionMode()); }
        }

        public static PackageManager PackageManager
        {
            get { return _packageManager ?? (_packageManager = new PackageManager()); }
        }

        public static NetworkManager NetworkManager
        {
            get { return _networkManager ?? (_networkManager = new NetworkManager()); }
        }

        public static FileManager FileManager
        {
            get { return _fileManager ?? (_fileManager = new FileManager()); }
        }
    }
}
